1. Field of the Invention
The present invention relates to the field of computer systems. More specifically, the present invention relates to methods and apparatuses associated with customizing software executed on computer systems.
2. Background Information
It is axiomatic that one size does not fit all. Thus, virtually all software vendors allow customization to be made to their software. However, prior art software customization is typically limited to a range of user selections, such as the selection of certain operating parameters, e.g., the background color for the screen display, and the selection of whether certain features are to be installed, e.g., accessibility features for xe2x80x9caccess challengedxe2x80x9d users. These prior art user selection based approaches suffer from at least one or more of the following disadvantages:
1. They require the user/installer to make the choices;
2. In order for the user/installer to make the choices, they require the user/installer to have prior knowledge of the user""s preference;
3. In the case of a xe2x80x9cnovicexe2x80x9d user, they require the intervention of the installer to reinstall the software if the installer did not make the correct feature selection at install time, or if the user requirement subsequently changes;
4. They do not address interoperability issues between different program products; and
5. They also do not address field upgradability issues.
Thus, a more effective and user friendly approach to software customization is desired.
Software is customized by generating, for a first set of software objects having usage characteristic data collected, a second set of software objects to totally or partially replace the first set of software objects. The second set of software objects is generated based at least in part on the collected usage characteristic data of the first set of software objects. In one embodiment, the generation includes optimizing the second set of software objects being generated based on the usage characteristic data, which include calling frequencies of caller/callee objects of the first set of software objects. In one embodiment, the generation is automatically performed at idle periods of the user""s system, if the usage characteristics are determined to be sufficiently changed.